package com.ruoyi.web.controller.news;

import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.domain.news.NewsEvaluationRectification;
import com.ruoyi.system.domain.news.dto.NewsEvaluationRectificationDto;
import com.ruoyi.system.domain.news.query.NewsEvaluationRectificationQuery;
import com.ruoyi.system.domain.news.vo.NewsEvaluationRectificationVo;
import com.ruoyi.system.service.news.NewsEvaluationRectificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/news/newsEvaluationRectification")
@Api(value = "newsEvaluationRectificationController", tags  = "测评整改")
public class NewsEvaluationRectificationController extends BaseController {

	@Resource
	private NewsEvaluationRectificationService newsEvaluationRectificationService;

    @ApiOperation(value = "新增/修改测评整改信息", notes = "新增/修改测评整改信息")
	@PostMapping("/submit")
	public R submit(@RequestBody NewsEvaluationRectificationDto newsEvaluationRectificationDto) {
		LoginUser loginUser = SecurityUtils.getLoginUser();
		NewsEvaluationRectification newsEvaluationRectification = new NewsEvaluationRectification();
		BeanUtils.copyProperties(newsEvaluationRectificationDto,newsEvaluationRectification);
		if (newsEvaluationRectification.getId()==null) {
			newsEvaluationRectification.setCreateBy(loginUser.getUsername());
			newsEvaluationRectification.setDeptId(loginUser.getDeptId());
			newsEvaluationRectification.setCreateTime(new Date());
			newsEvaluationRectification.setUpdateBy(loginUser.getUsername());
			newsEvaluationRectification.setUpdateTime(new Date());
		} else {
			newsEvaluationRectification.setUpdateBy(loginUser.getUsername());
			newsEvaluationRectification.setUpdateTime(new Date());
		}
		boolean result = newsEvaluationRectificationService.saveOrUpdate(newsEvaluationRectification);
		if (result) {
			return R.ok();
		} else {
			return R.fail("操作失败");
		}
	}

	@ApiOperation(value = "删除测评整改信息", notes = "删除测评整改信息")
	@DeleteMapping("/delete")
	public R delete(@RequestParam(value = "id") Long id) {
		boolean result = newsEvaluationRectificationService.removeById(id);
		if (result) {
			return R.ok();
		} else {
			return R.fail("操作失败");
		}
	}

	@ApiOperation(value = "获取单个测评整改信息", notes = "获取单个测评整改信息")
	@GetMapping("/getById")
	public R<NewsEvaluationRectificationVo> getById(@RequestParam(value = "id") Long id) {
		NewsEvaluationRectificationQuery newsEvaluationRectificationQuery = new NewsEvaluationRectificationQuery();
		newsEvaluationRectificationQuery.setId(id);
		List<NewsEvaluationRectificationVo> newsEvaluationRectificationList = newsEvaluationRectificationService.getNewsEvaluationRectificationList(newsEvaluationRectificationQuery);
		if (newsEvaluationRectificationList!=null&&newsEvaluationRectificationList.size()>0) {
			return R.ok(newsEvaluationRectificationList.get(0));
		} else {
			return R.fail("数据不存在");
		}
	}

	@ApiOperation(value = "获取测评整改信息列表")
	@PostMapping(value = "/list")
	public R<PageInfo<NewsEvaluationRectificationVo>> list(@RequestBody NewsEvaluationRectificationQuery newsEvaluationRectificationQuery) {
		List<NewsEvaluationRectificationVo> newsEvaluationRectificationList = newsEvaluationRectificationService.getNewsEvaluationRectificationList(newsEvaluationRectificationQuery);
		return R.ok(new PageInfo<>(newsEvaluationRectificationList));
	}
}
